﻿using System;
using System.Windows;
using DevExpress.Xpf.Core;
using ChatApp.Client.Common;
using ChatApp.Client.ChatAppServiceReference;
using System.ServiceModel;
using DevExpress.XtraEditors.DXErrorProvider;


namespace ChatApp.Client
{
    /// <summary>
    /// Interaction logic for ThemBan.xaml
    /// </summary>
    public partial class ThemBan : DXWindow, IChatAppServiceCallback
    {
        #region Fields

        private ChatAppServiceClient service;
        private User userAdd;

        #endregion

        public ThemBan()
        {
            InitializeComponent();
            service = new ChatAppServiceClient(new InstanceContext(this));
            txtTenDangNhap.Focus();
        }

        private void btnDong_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }

        private void btnThemMoi_Click(object sender, RoutedEventArgs e)
        {
            // Tiến hành kiểm tra tài khoản
            txtTenDangNhap.CausesValidation = true;
            txtTenDangNhap.DoValidate();
            if (txtTenDangNhap.HasValidationError)
                return;

            // Thực hiện insert 1 tài khoản làm bạn mới
            AddFriend addFriend = new AddFriend();
            addFriend.UserName = ChatAppGlobal.UserLogin.UserName;
            addFriend.UserNameAdd = userAdd.UserName;
            int idAddFriend = service.CreateAddFriend(addFriend);

            // Nếu thực hiện Insert không thành công idaddfriend sẽ <= 0
            if (idAddFriend > 0)
            {
                // add friednd này vào danh sách add friend trên form chính
                addFriend.IdAddFriend = idAddFriend;
                addFriend.User1 = userAdd;

                // add friend vừa thêm mới vào danh sách bạn bè trên màn hình chính
                ChatAppGlobal.ListAddFriend.Add(addFriend);

                // Load lại danh sách bạn bè trên màn hình chính
                MainWindow mainWindown = ChatAppGlobal.FormMainWindow as MainWindow;
                if (mainWindown != null)
                {
                    mainWindown.ucListChatControl.BindListDanhSachBanBe();
                }
                DXMessageBox.Show("Thêm bạn mới thành công !", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Information);
            }
            else
            {
                DXMessageBox.Show("Thêm bạn mới không thành công !", "Thông báo", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }

        private void txtTenDangNhap_Validate(object sender, DevExpress.Xpf.Editors.ValidationEventArgs e)
        {
            if (string.IsNullOrEmpty(e.Value as string))
            {
                e.SetError("Thông tin không được để trống", ErrorType.Critical);
                e.IsValid = false;
                return;
            }

            userAdd = service.RetrieveUserByUserName(e.Value as string);
            if (userAdd == null)
            {
                e.SetError("Tài khoản không tồn tại. Vui lòng nhập tài khoản khác !!!", ErrorType.Critical);
                e.IsValid = false;
                return;
            }

            if (service.IsDuplicateUserAdd(ChatAppGlobal.UserLogin.UserName, userAdd.UserName))
            {
                e.SetError("Tài khoản đã được thêm vào danh sách bạn bè trước đó. Vui lòng nhập tài khoản khác !!!", ErrorType.Critical);
                e.IsValid = false;
                return;
            }

            e.IsValid = true;
        }

        public void RefreshContentChat(int idRoom, string tenRoom, string userNameSend, string textChat, bool laChatRoom)
        {
        }
    }
}
